const mongoose = require('mongoose');

const workOrderSchema = new mongoose.Schema({
  // 新增客户信息冗余字段
  customer_name: {
    type: String,
    required: [true, '客户姓名不能为空']
  },
  customer_phone: {
    type: String,
    required: [true, '客户手机号不能为空'],
    match: [/^1[3-9]\d{9}$/, '手机号格式不正确']
  },
  customer_address: {
    type: String,
    required: [true, '客户地址不能为空']
  },
  customer_id: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
    required: [true, '客户ID不能为空']
  },
  staff_id: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'  // 客服ID（可选，初始为空）
  },
  station_id: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'  // 站点ID（角色为2时有效）
  },
  repairman_id: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'  // 维修员ID（角色为3时有效）
  },
  status: {
    type: String,
    required: [true, '工单状态不能为空'],
    enum: {
      values: ['待处理', '待分配站点', '待分派维修员', '待预约', '待上门服务', '待客服回访', '已完成'],
      message: '状态值不合法'
    },
    default: '待处理'
  },
  // 新增用户诉求字段（必填）
  user_claim: {
    type: String,
    required: [true, '用户诉求不能为空']
  },
  // 新增客服判断字段（可选）
  staff_judgment: String,
  // 新增维修工检查结果字段（可选）
  repair_inspection: String,
  // 新增维修工维修结果字段（可选）
  repair_result: String,
  // 新增预约时间字段（可选，Date类型）
  appointment_time: {
    type: Date,
    description: '记录工单的预约上门时间'
  },

  events: {
    type: [String],  // 字符串数组类型
    default: []       // 默认空数组（已移除校验）
  },
  feedback: String  // 回访单改为字符串类型（无校验）
}, { timestamps: true });

// 为常用查询字段添加索引
workOrderSchema.index({ customer_id: 1 });
// 新增复合索引（状态+时间倒序）
workOrderSchema.index({ status: 1, 'events.time': -1 });

module.exports = mongoose.model('WorkOrder', workOrderSchema);